// Copyright (c) Microsoft Corporation.  All rights reserved.
#pragma once

#include "SideShowServiceType.h"
class CDPWSSideShowDeviceSimulatorDlg;

//------------------------------------------------------------------------------
// CSideShowService
//      Windows SideShow service implementation
//------------------------------------------------------------------------------
class CSideShowService:
    public ISideShowServiceType
{
public:
    CSideShowService(CDPWSSideShowDeviceSimulatorDlg* pMainWnd);
private:
    ~CSideShowService(void);

public:
    // IUnknown Implementation
    STDMETHODIMP QueryInterface(
        __in REFIID riid, 
        __deref_out_opt void** ppvObject
        );
    STDMETHODIMP_(ULONG) AddRef();
    STDMETHODIMP_(ULONG) Release();

    // ISideShowServiceType
    HRESULT __stdcall
        GetSideShowElements
        (   /*[out]*/ SIDE_SHOW_ELEMENTS_TYPE** SideShowElementsOut
        );

    HRESULT __stdcall
        SendSideShowFrameStream
        (   /*[in]*/ SIDE_SHOW_FRAME_STREAM_TYPE* SideShowStreamInformation
        );

private:
    LONG m_cRef;

    CDPWSSideShowDeviceSimulatorDlg* m_pMainWnd;
};
